home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 16.3 KB | 538 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWPrtIte.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWFrameW.hpp"
-
- #ifndef FWPRTITE_H
- #include "FWPrtIte.h"
- #endif
-
- #ifndef FWFRAME_H
- #include "FWFrame.h"
- #endif
-
- #ifndef FWFRMING_H
- #include "FWFrming.h"
- #endif
-
- #ifndef FWITERS_H
- #include "FWIters.h"
- #endif
-
- #ifndef FWPXYFRM_H
- #include "FWPxyFrm.h"
- #endif
-
- #ifndef FWPXYITE_H
- #include "FWPxyIte.h"
- #endif
-
- // ----- ODUtil -----
-
- #ifndef FWORDCOL_H
- #include "FWOrdCol.h"
- #endif
-
- // ----- OpenDoc Includes -----
-
- #ifndef SOM_ODFacetIterator_xh
- #include <FacetItr.xh>
- #endif
-
- #ifndef SOM_ODFrameFacetIterator_xh
- #include <FrFaItr.xh>
- #endif
-
- //========================================================================================
- // Runtime informations
- //========================================================================================
-
- #ifdef FW_BUILD_MAC
- #pragma segment framework
- #endif
-
- FW_DEFINE_AUTO(FW_CPartFrameIterator)
- FW_DEFINE_AUTO(FW_CPartProxyFrameIterator)
- FW_DEFINE_AUTO(FW_CPartEmbeddedFrameIterator)
- FW_DEFINE_AUTO(FW_CPartPresentationIterator)
- FW_DEFINE_AUTO(FW_CPartKindIterator)
- FW_DEFINE_AUTO(FW_CPartProxyIterator)
-
- //========================================================================================
- // class FW_CPartFrameIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::FW_CPartFrameIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartFrameIterator::FW_CPartFrameIterator(Environment* ev, const FW_CPart* part) :
- fPresentationIterator(part),
- fFrameIterator(NULL),
- fCurrentFrame(NULL)
- {
- FW_UNUSED(ev);
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::~FW_CPartFrameIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartFrameIterator::~FW_CPartFrameIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fFrameIterator;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::First
- //---------------------------------------------------------------------------------------
-
- FW_CFrame* FW_CPartFrameIterator::First(Environment* ev)
- {
- return PrivFirstFrame(ev, fPresentationIterator.First());
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::Last
- //---------------------------------------------------------------------------------------
-
- FW_CFrame* FW_CPartFrameIterator::Last(Environment* ev)
- {
- return PrivLastFrame(ev, fPresentationIterator.Last());
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::Next
- //---------------------------------------------------------------------------------------
-
- FW_CFrame* FW_CPartFrameIterator::Next(Environment* ev)
- {
- FW_ASSERT(fFrameIterator);
-
- fCurrentFrame = fFrameIterator->Next(ev);
- if (fCurrentFrame == NULL)
- {
- FW_CPresentation* presentation = fPresentationIterator.Next();
- PrivFirstFrame(ev, presentation);
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::Previous
- //---------------------------------------------------------------------------------------
-
- FW_CFrame* FW_CPartFrameIterator::Previous(Environment* ev)
- {
- FW_ASSERT(fFrameIterator);
-
- fCurrentFrame = fFrameIterator->Previous(ev);
- if (fCurrentFrame == NULL)
- {
- FW_CPresentation* presentation = fPresentationIterator.Previous();
- PrivLastFrame(ev, presentation);
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::PrivFirstFrame
- //---------------------------------------------------------------------------------------
-
- FW_CFrame* FW_CPartFrameIterator::PrivFirstFrame(Environment* ev, FW_CPresentation* presentation)
- {
- fCurrentFrame = NULL;
-
- delete fFrameIterator;
- fFrameIterator = NULL;
-
- while (presentation != NULL)
- {
- fFrameIterator = FW_NEW(FW_CPresentationFrameIterator, (ev, presentation));
- fCurrentFrame = fFrameIterator->First(ev);
- if (fCurrentFrame != NULL)
- return fCurrentFrame;
-
- delete fFrameIterator;
- fFrameIterator = NULL;
- presentation = fPresentationIterator.Next();
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartFrameIterator::PrivLastFrame
- //---------------------------------------------------------------------------------------
-
- FW_CFrame* FW_CPartFrameIterator::PrivLastFrame(Environment* ev, FW_CPresentation* presentation)
- {
- fCurrentFrame = NULL;
-
- delete fFrameIterator;
- fFrameIterator = NULL;
-
- while (presentation != NULL)
- {
- fFrameIterator = FW_NEW(FW_CPresentationFrameIterator, (ev, presentation));
- fCurrentFrame = fFrameIterator->Last(ev);
- if (fCurrentFrame != NULL)
- return fCurrentFrame;
-
- delete fFrameIterator;
- fFrameIterator = NULL;
- presentation = fPresentationIterator.Previous();
- }
-
- return fCurrentFrame;
- }
-
- //========================================================================================
- // class FW_CPartProxyFrameIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::FW_CPartProxyFrameIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartProxyFrameIterator::FW_CPartProxyFrameIterator(const FW_CEmbeddingPart* part) :
- fProxyIterator(part),
- fProxyFrameIterator(NULL),
- fCurrentFrame(NULL)
- {
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::~FW_CPartProxyFrameIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartProxyFrameIterator::~FW_CPartProxyFrameIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fProxyFrameIterator;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::First
- //---------------------------------------------------------------------------------------
-
- FW_CProxyFrame* FW_CPartProxyFrameIterator::First()
- {
- return PrivFirstFrame(fProxyIterator.First());
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::Last
- //---------------------------------------------------------------------------------------
-
- FW_CProxyFrame* FW_CPartProxyFrameIterator::Last()
- {
- return PrivLastFrame(fProxyIterator.Last());
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::Next
- //---------------------------------------------------------------------------------------
-
- FW_CProxyFrame* FW_CPartProxyFrameIterator::Next()
- {
- FW_ASSERT(fProxyFrameIterator);
-
- fCurrentFrame = fProxyFrameIterator->Next();
- if (fCurrentFrame == NULL)
- {
- FW_MProxy* proxy = fProxyIterator.Next();
- PrivFirstFrame(proxy);
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::Previous
- //---------------------------------------------------------------------------------------
-
- FW_CProxyFrame* FW_CPartProxyFrameIterator::Previous()
- {
- FW_ASSERT(fProxyFrameIterator);
-
- fCurrentFrame = fProxyFrameIterator->Previous();
- if (fCurrentFrame == NULL)
- {
- FW_MProxy* proxy = fProxyIterator.Previous();
- PrivLastFrame(proxy);
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::PrivFirstFrame
- //---------------------------------------------------------------------------------------
-
- FW_CProxyFrame* FW_CPartProxyFrameIterator::PrivFirstFrame(FW_MProxy* proxy)
- {
- fCurrentFrame = NULL;
-
- delete fProxyFrameIterator;
- fProxyFrameIterator = NULL;
-
- while (proxy != NULL)
- {
- fProxyFrameIterator = FW_NEW(FW_CProxyProxyFrameIterator, (proxy));
- fCurrentFrame = fProxyFrameIterator->First();
- if (fCurrentFrame != NULL)
- return fCurrentFrame;
-
- delete fProxyFrameIterator;
- fProxyFrameIterator = NULL;
- proxy = fProxyIterator.Next();
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyFrameIterator::PrivLastFrame
- //---------------------------------------------------------------------------------------
-
- FW_CProxyFrame* FW_CPartProxyFrameIterator::PrivLastFrame(FW_MProxy* proxy)
- {
- fCurrentFrame = NULL;
-
- delete fProxyFrameIterator;
- fProxyFrameIterator = NULL;
-
- while (proxy != NULL)
- {
- fProxyFrameIterator = FW_NEW(FW_CProxyProxyFrameIterator, (proxy));
- fCurrentFrame = fProxyFrameIterator->Last();
- if (fCurrentFrame != NULL)
- return fCurrentFrame;
-
- delete fProxyFrameIterator;
- fProxyFrameIterator = NULL;
- proxy = fProxyIterator.Previous();
- }
-
- return fCurrentFrame;
- }
-
- //========================================================================================
- // class FW_CPartEmbeddedFrameIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::FW_CPartEmbeddedFrameIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartEmbeddedFrameIterator::FW_CPartEmbeddedFrameIterator(Environment* ev, const FW_CEmbeddingPart* part, FW_CEmbeddingFrame* frame) :
- fProxyIterator(part),
- fEmbeddedFrameIterator(NULL),
- fCurrentFrame(NULL),
- fEmbeddingFrame(frame)
- {
- FW_UNUSED(ev);
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::~FW_CPartEmbeddedFrameIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartEmbeddedFrameIterator::~FW_CPartEmbeddedFrameIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fEmbeddedFrameIterator;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::First
- //---------------------------------------------------------------------------------------
-
- ODFrame* FW_CPartEmbeddedFrameIterator::First(Environment* ev)
- {
- return PrivFirstFrame(ev, fProxyIterator.First());
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::Last
- //---------------------------------------------------------------------------------------
-
- ODFrame* FW_CPartEmbeddedFrameIterator::Last(Environment* ev)
- {
- return PrivLastFrame(ev, fProxyIterator.Last());
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::Next
- //---------------------------------------------------------------------------------------
-
- ODFrame* FW_CPartEmbeddedFrameIterator::Next(Environment* ev)
- {
- FW_ASSERT(fEmbeddedFrameIterator);
-
- fCurrentFrame = fEmbeddedFrameIterator->Next(ev);
- if (fCurrentFrame == NULL)
- {
- FW_MProxy* proxy = fProxyIterator.Next();
- PrivFirstFrame(ev, proxy);
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::Previous
- //---------------------------------------------------------------------------------------
-
- ODFrame* FW_CPartEmbeddedFrameIterator::Previous(Environment* ev)
- {
- FW_ASSERT(fEmbeddedFrameIterator);
-
- fCurrentFrame = fEmbeddedFrameIterator->Previous(ev);
- if (fCurrentFrame == NULL)
- {
- FW_MProxy* proxy = fProxyIterator.Previous();
- PrivLastFrame(ev, proxy);
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::PrivFirstFrame
- //---------------------------------------------------------------------------------------
-
- ODFrame* FW_CPartEmbeddedFrameIterator::PrivFirstFrame(Environment* ev, FW_MProxy* proxy)
- {
- fCurrentFrame = NULL;
-
- delete fEmbeddedFrameIterator;
- fEmbeddedFrameIterator = NULL;
-
- while (proxy != NULL)
- {
- fEmbeddedFrameIterator = FW_NEW(FW_CProxyEmbeddedFrameIterator, (ev, proxy));
- fCurrentFrame = fEmbeddedFrameIterator->First(ev);
- if (fCurrentFrame != NULL)
- return fCurrentFrame;
-
- delete fEmbeddedFrameIterator;
- fEmbeddedFrameIterator = NULL;
- proxy = fProxyIterator.Next();
- }
-
- return fCurrentFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartEmbeddedFrameIterator::PrivLastFrame
- //---------------------------------------------------------------------------------------
-
- ODFrame* FW_CPartEmbeddedFrameIterator::PrivLastFrame(Environment* ev, FW_MProxy* proxy)
- {
- fCurrentFrame = NULL;
-
- delete fEmbeddedFrameIterator;
- fEmbeddedFrameIterator = NULL;
-
- while (proxy != NULL)
- {
- fEmbeddedFrameIterator = FW_NEW(FW_CProxyEmbeddedFrameIterator, (ev, proxy));
- fCurrentFrame = fEmbeddedFrameIterator->Last(ev);
- if (fCurrentFrame != NULL)
- return fCurrentFrame;
-
- delete fEmbeddedFrameIterator;
- fEmbeddedFrameIterator = NULL;
- proxy = fProxyIterator.Previous();
- }
-
- return fCurrentFrame;
- }
-
- //========================================================================================
- // class FW_CPartKindIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartKindIterator::FW_CPartKindIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartKindIterator::FW_CPartKindIterator(const FW_CPart* part) :
- FW_TOrderedCollectionIterator<FW_CKind>(part->fKinds)
- {
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartKindIterator::~FW_CPartKindIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartKindIterator::~FW_CPartKindIterator()
- {
- FW_START_DESTRUCTOR
- }
-
- //========================================================================================
- // class FW_CPartPresentationIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartPresentationIterator::FW_CPartPresentationIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartPresentationIterator::FW_CPartPresentationIterator(const FW_CPart* part) :
- FW_TOrderedCollectionIterator<FW_CPresentation>(part->fPresentations)
- {
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartPresentationIterator::~FW_CPartPresentationIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartPresentationIterator::~FW_CPartPresentationIterator()
- {
- FW_START_DESTRUCTOR
- }
-
- //========================================================================================
- // class FW_CPartProxyIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyIterator::FW_CPartProxyIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartProxyIterator::FW_CPartProxyIterator(const FW_CEmbeddingPart* part) :
- FW_TOrderedCollectionIterator<FW_MProxy>(part->fProxys)
- {
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartProxyIterator::~FW_CPartProxyIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartProxyIterator::~FW_CPartProxyIterator()
- {
- FW_START_DESTRUCTOR
- }
-
-